package com.cy.tempflinkcdc.service.sqlgenerator;


import com.cy.tempflinkcdc.datachange.DataChangeInfo;

/**
 * @author: Zzz
 * @date: 2024/3/25 17:21
 * @description:
 */
public abstract class AbstractSqlGenerator implements SqlGeneratorService {
    @Override
    public String generatorSql(DataChangeInfo dataChangeInfo) {
        return null;
    }

    public String quoteIdentifier(String identifier) {
        // 对字段名进行转义处理，这里简化为对其加反引号
        // 实际应该处理数据库标识符的特殊字符
        return "`" + identifier + "`";
    }

    public String formatValue(Object value) {
        // 根据值的类型返回 SQL 语句中的字符串
        // 这里需要根据实际类型来转换
        if (value == null) {
            return "NULL";
        } else if (value instanceof String) {
            String strValue = (String) value;
            // 处理单引号
            strValue = strValue.replace("'", "''");
            // 处理双引号
            // strValue = strValue.replace("\"", "\\\"");
            strValue = strValue.replace("\\", "\\\\");
            return "'" + strValue + "'";

            // return "\"" + ((String) value).replace("'", "''") + "\"";
         } else if (value instanceof Number) {
            return value.toString();
        }else {
            return value.toString();
        }
    }
}
